---
title: Retrieve a single task
summary: Load one task row by sequence number via the pk82036_task.task_select stored procedure.
status: draft
owner: SAIF Documentation
last_reviewed: 2026-08-21
library: SAIF.Business.Tasks
reference_type: embedded
operation_id: OP-6
trigger: Application requests a specific task by TaskSeqNum
---

# Retrieve a single task

This operation loads one task row via `pk82036_task.task_select` (an Oracle REF CURSOR output) and materializes it via `Fill`/`PostFill`.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-6 |
| **Trigger** | Application requests a specific task |
| **Inputs** | `TaskSeqNum` |
| **Outputs** | Populated `clsTask` instance |
| **Primary components** | `clsTask.BeforeRetrieve`, `clsTask.AfterRetrieve`, `clsTask.Fill` |
| **Entry point** | `SAIF.Business.Tasks/clsTask.vb` |

## Steps

1. Build a `StoredProcedure` request on `pk82036_task.task_select` with input parameter `TaskID` = `TaskSeqNum` and an Oracle REF CURSOR output parameter `recordset` ([SQL-002](../sql/SQL-002-select-task.md), [TASK](../database-tables.md#task)).
   > **Origin**: The `task_select` procedure body resides in the Oracle database and was not retrieved in this analysis pass.**
2. Framework executes the request against the DPI.
3. `AfterRetrieve` casts `Result` to `clsSAIFDataReader`, reads one row, calls `Fill`, then `MarkOld()` and returns `Me`.
4. `Fill` maps 19 task columns plus the six `Context*` columns onto members, then calls the abstract `PostFill()` so descendants can map their own additional columns.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start(["Retrieve single task<br>requested"]) --> S1["BeforeRetrieve builds<br>task_select request"]
	S1 --> S2[Framework executes request]
	S2 --> S3["AfterRetrieve reads one row<br>via clsSAIFDataReader"]
	S3 --> S4["Fill maps 19 task + 6<br>context columns"]
	S4 --> S5["PostFill —<br>descendant-specific mapping"]
	S5 --> EndOk([MarkOld — task returned])
```

## Failure and edge-case behavior

- No `RowsAffected` contention check applies on retrieval (read-only path).

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- SAIF.Business.Tasks/clsTask.vb
